package ccnu.agile.enums;

import ccnu.agile.constant.System;

/**
 * @Description: 对内错误码和错误描述：aaw-privXX形式
 * @Author: JreamY
 * @Date: 2021/5/25
 */
public enum PrivError {

    /**
     * 全局：未定义异常
     */
    UNDEFINED(BusinessModel.GLOBAL, "01", "未定义异常"),
    /**
     * 全局：用户未登录
     */
    USER_NOT_LOGIN(BusinessModel.GLOBAL, "02", "用户未登录"),
    /**
     * 全局：token失效
     */
    TOKEN_EXPIRE(BusinessModel.GLOBAL, "03", "token失效"),
    /**
     * 全局：token无效
     */
    INVALID_TOKEN(BusinessModel.GLOBAL, "04", "无效的token"),
    /**
     * 全局：用户在指定项目中不存在角色
     */
    PROJECT_NOROLE(BusinessModel.GLOBAL, "05", "用户在指定项目中不存在角色"),
    /**
     * 全局：用户在指定项目中的角色未配置可访问资源列表
     */
    PROJECT_ROLE_CONFIG_ERROR(BusinessModel.GLOBAL, "06", "用户在指定项目中的角色未配置可访问资源列表"),
    /**
     * 全局：数据库中未找到对应配置的资源
     */
    RESOURCE_UNDEFINED(BusinessModel.GLOBAL, "07", "数据库中未找到对应配置的资源"),
    /**
     * 全局：无权访问资源
     */
    RESOURCE_PERMISSION(BusinessModel.GLOBAL, "08", "无权访问资源"),
    /**
     * 全局：接口未配置cPermission
     */
    CPERMISSION_UNDEFINED(BusinessModel.GLOBAL, "09", "接口未配置cPermission"),
    /**
     * 全局：参数校验失败
     */
    CPARAM_CHECK_FAIL(BusinessModel.GLOBAL, "10", "参数错误"),
    /**
     * 全局：时间格式转换失败
     */
    DATE_FORMAT_FAIL(BusinessModel.GLOBAL, "11", "时间格式转换失败"),
    /**
     * 全局：自动生成代码接口文件输出位置不存在
     */
    DIRECTORY_NOT_FOUND(BusinessModel.GLOBAL, "12", "自动生成代码接口文件输出位置不存在"),
    /**
     * 全局：自动生成代码接口文件输出位置不存在
     */
    GENERIC_CHECK_STATUS_ERROR(BusinessModel.GLOBAL, "13", "check状态异常，请检查代码"),
    /**
     * 全局：接口配置有误
     */
    CPERMISSION_CONFIG_ERROR(BusinessModel.GLOBAL, "14", "接口配置有误")

    ;

    private BusinessModel model;

    private String code;

    private String errorDesc;

    PrivError(BusinessModel model, String code, String errorDesc) {
        this.model = model;
        this.code = code;
        this.errorDesc = errorDesc;
    }

    private String errorCode;

    public String getErrorDesc() {
        return this.errorDesc;
    }

    public String getErrorCode() {

        StringBuilder errorCode = new StringBuilder(System.Error.PREFIX);
        errorCode.append(model.getCode()).append(System.Error.INSIDE).append(code);
        return errorCode.toString();
    }
}
